package pm.gui;

import pm.core.PrintProperties;
import pm.core.CopyProperties;

import java.io.File;

/**
 * @author Anton Bernatski
 */
public interface GuiModuleListener {

	/**
	 * "Print Choose File" screen -> "Open" button
	 *
	 * @param file choosed file
	 */
	public void openFile(final File file);

	/**
	 * "Print" screen -> "Back" button
	 */
	public void closeCurrentDocument();

	/**
	 * "Print" screen -> "Next Page" button
	 */
	public void nextPage();

	/**
	 * "Print" screen -> "Previous Page" button
	 */
	public void previousPage();

	/**
	 * "Print" screen -> "Print" button
	 *
	 * @param printProperties parameters for printing specified by user
	 */
	public void print(final PrintProperties printProperties);

	/**
	 * "Scan" screen -> "Scan" button
	 */
	public void scan();

	/**
	 * "Scan" screen -> "Save" button
	 *
	 * @param path specified by user
	 */
	public void save(final String path);

	/**
	 * "Copy" screen -> "Copy Without Preview" button
	 *
	 * @param copyProperties specified properties
	 */
	public void copy(final CopyProperties copyProperties);

	/**
	 * "Copy" screen -> "Scan" button
	 */
	public void copyScan();

	/**
	 * "Copy" screen -> "Print" button
	 *
	 * @param copyProperties specified properties
	 */
	public void copyPrint(final CopyProperties copyProperties);

	/**
	 * "Session" panel -> "Finish" button
	 */
	public void finish();

	/**
	 * Close the application (Alt + F4)
	 */
	public void exit();
}
